package com.pro01.apirednote.service;

import com.pro01.apirednote.dto.ContentRequest;
import com.pro01.apirednote.dto.ContentWithFilesResponse;
import com.pro01.apirednote.pojo.Content;
import com.pro01.apirednote.pojo.PageResult;
import com.pro01.apirednote.pojo.Result;

import java.util.List;

public interface ContentService {
    // 发布内容
    Result<?> createContent(Long userId, ContentRequest request);

    // 修改内容
    Result<?> editContent(Long userId, Long contentId, ContentRequest request);

    // 删除内容
//    Result<?> deleteContent(Long userId, Long contentId);
    Result<?> deleteContentWithRole(Long userId, Long contentId, String role);

    // 查看我发布的内容
    Result<PageResult<ContentWithFilesResponse>> getMyContent(Long userId, int pageNum, int pageSize);

    // 查看内容详情
//    Result<ContentWithFilesResponse> getContentDetail(Long contentId);

    // 查看内容详情（记录浏览历史）
    Result<ContentWithFilesResponse> getContentDetail(Long contentId, Long userId);

    // 根据标题关键字搜索内容
    Result<PageResult<Content>> searchByTitle(String keyword, int pageNum, int pageSize);

    // 获取全部内容列表（包含文件URL）
//    Result<PageResult<Content>> getAllContent(int pageNum, int pageSize);

    PageResult<ContentWithFilesResponse> listContents(int pageNum, int pageSize);

    // 管理员删除内容
    Result<Void> adminDeleteContent(Long contentId, String role);

    // 获取指定内容点赞数量
    Result<Integer> getLikeCount(Long contentId);

    // 获取推荐内容（按点赞数排序）
//    Result<PageResult<ContentWithFilesResponse>> getRecommendedContent(int pageNum, int pageSize);
    PageResult<ContentWithFilesResponse> getRecommendedContents(Long userId, int pageNum, int pageSize);
}
